The present invention relates generally to improvements in work flow management. More particularly, the invention relates to advantageous techniques for creating, examining and editing work objects.
Design and management of work flow in many enterprises often advantageously employs the use of work objects. Work objects are analogous to objects used in object-oriented programming. Each object is typically a set of data and instructions, wherein the data and instructions define the performance of a given set of actions. The data and instructions also characterize the object and govern its behavior. An object is typically defined by a set of data fields, which are used to define the specific element of work being processed or performed by the work object. The data fields are used as containers for information used during processing or to define the routing which the object takes as the flow of work proceeds. For example, a work object used to define the action of approving a loan application may include a data field defining an amount, for example, $500,000, above which approval must be sought from a higher authority. The work object may also contain instructions directing the routing of the work object, with the routing depending on whether the loan sought is above or below $500,000. If the loan sought is below $500,000, the object may remain at, for example, a local branch office. If the loan sought is greater than $500,000, the object may be referred to an approval authority at a central headquarters for processing by the authority and then routed back to the local branch office after processing by the approval authority.
Each work object also includes a set of instructions, which defines the operations which are to be undertaken and how the operations relate to the data fields. Each work object is preferably designed to provide data and functions needed by other work objects without a need for any work object to take into account the internal operation of another work object. Each work object simply interacts with other work objects to receive data and services and to provide data and services, without any awareness or need for awareness of the internal functioning of the work objects with which it interacts.
The use of work objects offers a number of advantages. If a task is separated into a number of work objects, that task can be distributed among a number of different persons or organizations, hereafter referred to as users, each working on the portion of the task defined by the work object, with data being transferred as defined by the work object. Moreover, as processing of a work object proceeds, different actions may be called for in order to continue processing of the object. For example, a work object may sequentially call for receiving and processing information from a customer, statistical analysis of the information received and preparation of a report on the information received from that customer and similar customers. These functions may suitably be performed by different users, each user specializing in one of the functions. As each function is reached, the work object may suitably be routed to the appropriate user so that processing may proceed. Routing of the work object may suitably be controlled by instructions contained within the work object.
Work flow can thus be followed from one work object to another, and from one user to another, without a need for each user working on the overall project to coordinate his or her activities with the others. Instead, coordination is accomplished through the definitions provided by the work objects and the design of work flow, which links work objects which must be processed sequentially, in coordination or in some other related fashion.
Work flow and work objects relating to a particular task may suitably be maintained on a computer or computer network, and work objects to be processed by various users may suitably be distributed to those users by sending the work objects to them or directing them to the work objects as maintained on a computer network and giving them access to the work objects in order to perform their functions.
Systems and networks used in the processing and hosting of work objects are frequently designed so that when a user starts to process a work object, the work object is treated as being in the possession of that user, and is locked to prevent access by others. When a work object is locked, no other user can have access to it until it is unlocked. This practice helps to prevent errors and conflicts by preventing two users from processing the work object with neither knowing that the other is processing it.
However, when a user has finished processing a work object, he or she may forget to unlock it. When work objects are distributed over a computer network, the objects may be distributed among users who are separated by great distances, so that it may be difficult to contact a user who has inadvertently left a work object locked in order to find out if the object is still being processed and to ask the user to unlock the object. In addition, a system event such as a network outage or timeout, a computer failure in one or more servers, a failure in an application being run on a server or workstation, or a workstation failure may have adverse effects in this environment. For example, these and similar events may cause the locking of one or more objects without a user's being aware that the objects were locked. As a result, such objects may be routed to new users in a locked state.
It would be advantageous to be able to search for locked work objects and to forcibly unlock those which appeared to have been inadvertently left locked. A large organization may maintain many work objects, many of which may have similar characteristics, so that it would be advantageous to be able to create search queries in order to retrieve work objects having similar characteristics and to unlock or perform other operations on a batch of work objects conforming to the terms of a query. In addition, work objects often require maintenance and editing in order to improve them and to update them in light of changed information. Editing, however, may change critical features of a work object unless a user has sufficient expertise to recognize a critical feature or value, or unless warned against making a critical change. It would also be advantageous, therefore, to be able to edit a work object but to be automatically warned when attempting to change critical features.